Tokeneer: Beyond Formal Program Verification

نویسندگان

  • Yannick Moy
  • Angela Wallenburg
چکیده

Tokeneer is a small-sized (10 kloc) security system which was formally developed and verified by Praxis at the request of NSA, using SPARK technology. Since its open-source release in 2008, only two problems were found, one by static analysis, one by code review. In this paper, we report on experiments where we systematically applied various static analysis tools (compiler, bug-finder, proof tools) and focused code reviews to all of the SPARK code (formally verified) and supporting Ada code (not formally verified) of the Tokeneer Project. We found 20 new problems overall, half of which are defects that could lead to a system failure should the system be used in its current state. Only two defects were found in SPARK code, which confirms the benefits of applying formal verification to reach higher levels of assurance. In order to leverage these benefits to code that is was not formally verified from the start, we propose to associate static analyses and dynamic analyses around a common expression of properties and constraints. This is the goal of starting project Hi-Lite, which involves AdaCore and Altran Praxis together with several industrial users and research labs.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Formal Verification of Tokeneer Behaviours Modelled in fUML Using CSP

Much research work has been done on formalizing UML diagrams, but less has focused on using this formalization to analyze the dynamic behaviours between formalized components. In this paper we propose using a subset of fUML (Foundational Subset for Executable UML) as a semi-formal language, and formalizing it to the process algebraic specification language CSP, to make use of FDR as a model che...

متن کامل

A Hypothesis-Based Approach to Detecting Runtime Violations

We have developed an approach to apply formal methods to represent program source code as a model and use an automated theorem prover to detect runtime violations by doing static analysis. Unlike other proof-based program verification approaches, this approach is based on a hypothesis to develop the implicit specification information, such as invariants, preconditions, postconditions, then usin...

متن کامل

Usability of AutoProof: a case study of software verification

Many verification tools come out of academic projects, whose natural constraints do not typically lead to a strong focus on usability. For widespread use, however, usability is essential. Using a well-known benchmark, the Tokeneer problem, we evaluate the usability of a recent and promising verification tool: AutoProof. The results show the efficacy of the tool in verifying a real piece of soft...

متن کامل

Testing Program Verification Techniques and Input Space Partitioning

1. Prove correctness This approach requires writing exhaustive, precise formal specifications (preconditions, postconditions, and usually loop invariants), then proving that these specifi­ cations are satisfied by the code and its environment. The proof can be performed by hand, but for non-trivial programs, the proofs are long and tedious and humans are prone to errors, so theorem-proving soft...

متن کامل

Web Service Choreography Verification Using Z Formal Specification

Web Service Choreography Description Language (WS-CDL) describes and orchestrates the services interactions among multiple participants. WS-CDL verification is essential since the interactions would lead to mismatches. Existing works verify the messages ordering, the flow of messages, and the expected results from collaborations. In this paper, we present a Z specification of WS-CDL. Besides ve...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2010